﻿using HCMS.CommonDtos;
using HCMS.Entities.Manage;
using HCMS.Repositories.Manage;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace HCMS.IServices.Manage
{
    /// <summary>
    /// 管理员 应用服务 接口
    /// </summary>
    public interface IAdminAppService : ICommonAppService<ManageDbContext, Admin>
    {
        /// <summary>
        /// 管理 列表
        /// </summary>
        /// <param name="searchArgs">搜索 参数</param>
        /// <param name="pager">分页 参数</param>
        /// <returns></returns>
        Task<ListPagerDto<object>> ManageList(SearchArgsDto searchArgs, PagerArgsDto pager);

        /// <summary>
        /// 设置登录信息
        /// </summary>
        /// <remarks>
        /// 人员进行登录、更新管理员密码、状态，都需要执行此方法
        /// </remarks>
        /// <param name="adminId">管理员 Id</param>
        /// <param name="timestamp">时间戳</param>
        /// <param name="ts">保存时间</param>
        /// <returns></returns>
        Task<bool> SetLoginedInfo(int adminId, long timestamp, TimeSpan ts);

        /// <summary>
        /// 获取登录信息
        /// </summary>
        /// <remarks>
        /// 无值、无效，则管理员自动下线
        /// </remarks>
        /// <param name="adminId">管理员 Id</param>
        /// <returns></returns>
        Task<string> GetLoginedInfo(int adminId);

        /// <summary>
        /// 获取全部管理员
        /// </summary>
        /// <returns></returns>
        Task<List<Admin>> AllList();
    }
}
